package com.baili.dao.productionorder;

import java.util.List;
import java.util.Map;

import com.baili.dto.ProductOrder;

/** 
 * @author iceX
 * @version 创建时间：2016年3月25日 上午11:34:31 
 * @Name: ProductionOrderDao.java
 */
public interface ProductionOrderDao {

	/**
	 * 获取生产通知单信息(查看)
	 * @return
	 */
	public List<Map<String, Object>> getProductionOrderList(ProductOrder productOrder);
	/**
	 * 获取生产通知单信息(审批)
	 * @return
	 */
	public List<Map<String, Object>> getApprProductionOrderList(ProductOrder productOrder);
	/**
	 * 获取生产通知单条数
	 * @return
	 */
	public int getProductionOrderCount();
	/**
	 * 获取生产通知单条数(查看)
	 * @return
	 */
	public List<Map<String,Object>> getProductorderList(ProductOrder productOrder);
	/**
	 * 获取生产通知单条数(审批)
	 * @return
	 */
	public List<Map<String,Object>> getApprProductorderList(ProductOrder productOrder);
	/**
	 * 根据id获取生产通知单详情
	 * @return
	 */
	public List queryProductionOrderDetailsList(ProductOrder productOrder);
	/**
	 * 根据时间获取质检详情
	 * @return
	 */
	public List getqualityChecksByTime(ProductOrder productOrder);
	/**
	 * 根据产品号获取质检详情
	 * @return
	 */
	public List getqualityChecksByproductNo(String productNo);
	/**
	 * 根据款号获取质检详情
	 * @return
	 */
	public List getqualityChecksByNumbers(String numbers);
	/**
	 * 根据工序获取质检详情
	 * @return
	 */
	public List getqualityChecksByProcess(String process);
	
	/**
	 * 生产通知单表查询-计划进度查看通过排程号查询
	 * @return
	 */
	public List getProductionOrderByScheduleNo(ProductOrder scheduleNo);
	/**
	 * 公司领导-生产通知单表查询-审批通过/驳回
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public void updateRoundTypeByProductCode(ProductOrder productOrder);
	/**
	 * 公司领导-生产通知单表查询-计划进度审批-规格、数量、轮次查询
	 * @return
	 */
	public void queryProductionOrderParameter(ProductOrder order,String flag);
	/**
	 * 公司领导-生产通知单表查询-计划进度审批-规格、数量、轮次查询
	 * @return
	 */
	public List queryProductionOrderParameterFOneStep(ProductOrder order);
	/**
	 * 公司领导-生产通知单表查询-计划进度审批-规格、数量、轮次查询
	 * @return
	 */
	public List queryProductionOrderParameterPOneStep(ProductOrder order);
	/**
	 * 公司领导-生产通知单表查询-计划进度审批-规格、数量、轮次查询
	 * @return
	 */
	public List queryProductionOrderParameterFOrP(ProductOrder order,String flag);
	
	/**
	 * 公司领导-生产通知单表查询-计划进度审批-根据轮次和规格和产品代码去更新数量
	 * @return
	 */
	public void updateProductionOrderByRoundAndSize(ProductOrder order);
	/**
	 * 公司领导-生产通知单表查询-计划进度审批-插入轮次
	 * @return
	 */
	public void insertProductionOrderByRoundAndSize(ProductOrder productOrder);
	/**
	 * 公司领导-生产通知单表查询-计划进度审批-根据产品代码和规格查处唯一一条数据
	 * @return
	 */
	public ProductOrder getProductionOrderByRoundAndProductCode(ProductOrder productOrder);
	/**
	 * 公司领导-生产通知单表查询-计划进度审批-根据产品代码和规格查处唯一一条数据
	 * @return
	 */
	public ProductOrder getProductionOrderByRound(ProductOrder productOrder);
	/**
	 * 公司领导-生产通知单表查询-计划进度审批-获取最大轮次
	 * @return
	 */
	public int getMaxRound(ProductOrder productOrder);
	
	public List<Map<String,Object>> selectProduction(String startTime,String endTime);
	/**
	 * 通过角色类型查询用户
	 * @return
	 */
	public List selectUserByRoleType();
	
	public int getUsersTypeCount();
	/**
	 * 公司领导-统计分析--多条件查询质检
	 * @return
	 */
	public List getqualityChecksByMany(String productCode, String processName,
			String startTime, String endTime);
	/**
	 * 统计缺陷数
	 * @return
	 */
	public int getqualityChecksSum();
	/**
	 * 工序列表
	 * @return
	 */
	public List getPrList();
	
	public void updateProductionOrder(ProductOrder productOrder);
	/**
	 * 审批的规格与数量行
	 * @return
	 */
	public List selectSizeAndCount(String code);
	/**
	 * 分生产小组和数量查询
	 * @return
	 */
	public List selectCount(String code);
	public ProductOrder getProductionOrderById(ProductOrder productOrder);
	public List selectProductTeamList();
	/**
	 * 根据ids[]依次查出来每个轮次信息
	 * @param productOrder
	 * @return
	 */
	public ProductOrder getOrderById(ProductOrder productOrder);
	
	public void deleteProductOrder(ProductOrder order);
	
	public List getProductOrderRound(ProductOrder order);
	
	public List getProductOrderRoundByRoundType(ProductOrder order);
	/**
	 * 查询所有排程号
	 * @param productOrder
	 * @return
	 */
	public List getProLst(ProductOrder order);
	public void deleteProductOrderById(ProductOrder order);
	
	public int getMaxRoundFFinished(ProductOrder productOrder);
}
